package com.itheima.练习.员工大礼包;

import java.util.ArrayList;

/*所以决定对这一部分员工，发放【缘分大礼包】，其余员工发放【普通大礼包】，请用技术手段，完成礼品的分发。
现有4个员工信息：
        张三，23
        李四，24
        张三，23
        张三，28
        运行结果：
        Employee{name=张三,age=23}获得了缘分大礼包
        Employee{name=李四,age=24}获得了普通大礼包
        Employee{name=张三,age=23}获得了缘分大礼包
        Employee{name=张三,age=28}获得了普通大礼包
        */
public class ygdlb {
    public static void main(String[] args) {
        //1.创建一个集合容器
   ArrayList<Employee>list=new ArrayList<>();
        //将四个员工存入集合中
     list.add(new Employee("张三",23));
        list.add(new Employee("李四",24));
        list.add(new Employee("张三",23));
        list.add(new Employee("张三",28));

        //使用循环嵌套完成缘分匹配
        for (int i = 0; i < list.size(); i++) {
            //拿到当前索引位置的元素
            Employee emp = list.get(i);
            //定义一个标记，默认集合中没人跟当前元素有缘
            boolean flag=false;
            //遍历集合，如果集合中存在和当前元素相同属性内容的话，则修改标记为true
            for (int j = 0; j < list.size(); j++) {
                //拿到当前是索引位置的元素
                Employee emp2 = list.get(j);
                //当前仅当emp和emp2地址值不同且属性值相同时，才修改标记为true
                if (emp!=emp2&&emp.equals(emp2)){
                    flag=true;
                }
            }
            //出了内层循环后，根据flag的值就可以判定当前emp对象是有发放缘分大礼包
            if (flag){
                System.out.println(emp+"获得缘分大礼包");
            }else {
                System.out.println(emp+"获得普通大礼包");
            }
        }


    }
}

class Employee {
    private String name;
    private int age;

    public Employee() {
    }

    public Employee(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Employee employee = (Employee) o;

        if (age != employee.age) return false;
        return name != null ? name.equals(employee.name) : employee.name == null;

    }

    @Override
    public String toString() {
        return "Employee{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

}